package tedu.oop3;
/*本类用作多态的入门案例*/
public class TestDemo {
    public static void main(String[] args) {
        Animal a=new Animal();
        Cat c=new Cat();
        Dog d =new Dog();
        a.eat();
        c.eat();
        d.eat();
        /*2,父类对象不可以使用子类的特有功能*/
        c.jump();
        d.run();

        //创建多态
        /*3,口诀1,父类引用指向子类对象
        * 创建出来的子类对象的地址值,交给父类类型的引用类型变量来保存*/
        Animal a2=new Cat();
       Animal a3=new Dog();
       /*编译看左边,运行看右边
       * 解释:必须在父类中定义这个方法,才能通过编译,把多态对象看做是父类类型
       * 必须要在子类中重写这个方法,才能满足多态,实际干活的是子类*/
        a2.eat();
        a3.eat();

    }
}
/*1,多态的前提:继承+重写*/
class Animal{
    public void eat(){
        System.out.println("小动物Animal吃啥都行~");
    }
}
class Cat extends Animal{
    public void eat(){
        System.out.println("小猫爱吃小鱼干~");
    }
    public void jump(){
        System.out.println("小猫Cat跳的老高了");
    }
}
class Dog extends Animal{
    public void eat(){
    System.out.println("小狗爱吃肉骨头~");
}
    public void run(){
        System.out.println("小狗Dog跑得老快了了");
    }
}